package com.zhz.service.impl;

import com.zhz.service.FileUploadService;
import com.zhz.util.FtpUtil;
import com.zhz.util.IDUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 周恒哲
 * @date 2020/03/03
 **/
@Service
public class FileUploadServiceImpl implements FileUploadService {

    @Value("${FTP_HOST}")
    private String FTP_HOST;

    @Value("${FTP_PORT}")
    private int FTP_PORT;

    @Value("${FTP_USERNAME}")
    private String FTP_USERNAME;

    @Value("${FTP_PASSWORD}")
    private String FTP_PASSWORD;

    @Value("${FTP_BASEPATH}")
    private String FTP_BASEPATH;

    /**
     * Description: 向FTP服务器上传文件
     *  host FTP服务器hostname
     *  port FTP服务器端口
     *  username FTP登录账号
     *  password FTP登录密码
     *  basePath FTP服务器基础目录
     *  filePath FTP服务器文件存放路径。例如分日期存放：/2018/01/01。文件的路径为basePath+filePath
     *  filename 上传到FTP服务器上的文件名
     *  input 输入流
     */
    @Override
    public String fileUpload(MultipartFile file) {
        try {
            //定义上传图片的目录结构
            SimpleDateFormat sdf=new SimpleDateFormat("/yyyy/MM/dd/");
            String path = sdf.format(new Date());
            //设置新的文件名
            String newFileName= IDUtils.genImageName()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
            FtpUtil.uploadFile(this.FTP_HOST,this.FTP_PORT,this.FTP_USERNAME,this.FTP_PASSWORD,this.FTP_BASEPATH,path,newFileName,file.getInputStream());
            String imageUrl="http://"+this.FTP_HOST+path+newFileName;
            return imageUrl;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
}
